#include "LL1Parser.hpp"

void example() {
  LL1Parser parser;
  // 这是课本P100第2题
  // 不允许出现或("|")，要拆开为不同定义式
  // 空字符串要用""
  // follow_idx无所谓初始化成什么,0就可以了
  parser.defines = {
      {"E", {"T", "EH"}, 0},     {"EH", {"+", "E"}, 0},  {"EH", {""}, 0},
      {"T", {"F", "TH"}, 0},     {"TH", {"T"}, 0},       {"TH", {""}, 0},
      {"F", {"P", "FH"}, 0},     {"FH", {"*", "FH"}, 0}, {"FH", {""}, 0},
      {"P", {"(", "E", ")"}, 0}, {"P", {"a"}, 0},        {"P", {"b"}, 0},
      {"P", {"^"}, 0},
  };
  // 终结符要单独输入一遍
  parser.terminals = {"+", "*", "(", ")", "a", "b", "^", ""};

  auto res = parser.get_table();
  auto key = std::string{"E", "("};
  if (res.count(key)) {
    auto tmp = res[key];
    // 进一步处理
  } else {
    // 非法，报错吧
  }
}
